#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main() {
	int fd;
	int n;

	if (mkfifo("/tmp/_x_server_01", 664) < 0) {
		if (errno != EEXIST) {
			printf("mkfifo error: %s\n", strerror(errno));
			return -1;
		}
	}

	if ((fd=open("/tmp/_x_server_01", O_RDONLY)) < 0) {
		printf("open fifo error: %s\n", strerror(errno));
		return -1;
	}

	while (1) {
		char buf[80] = {0};
		if ((n=read(fd, buf, 100)) < 0) {
			printf("read error: %s\n", strerror(errno));
			return -1;
		}

		if (n>0)
			printf("msg: %s\n", buf);

		sleep(1);
	}

	return 0;
}